Many software programs include a database that provides a set of data that is combined with user input to produce a desired output. Examples of such databases are dictionaries, catalogs, and component libraries.
Generally, the format of data used in a software application (e.g. a software tool for programming electronic devices) has been very tightly coupled to a particular version. If the software tool was modified in such a way that required changes in the data structure, such as additional and/or different fields and information, then any data that was based on the old software tool would not be compatible with the updated software version. As a result, a customer's existing database may not be carried forward and used with subsequent versions of a software tool. Revision of the data structure for compatibility has been a costly and/or tedious process.
The tight coupling between a database and its application provides rapid execution; however, in interactive applications execution speed is not a priority. Also, modern microprocessors provide significantly more power than those of just a few years ago.
Markup languages such as Extensible Markup Language, and other document oriented languages have typically not been used in computationally demanding environments. However, their resemblance to natural language and ability to be transformed (e.g., by the application of stylesheets) make them attractive for use in software that is subject to frequent revision.